home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 1995 #5 & #6 / Amiga Plus CD - 1995 - No. 5 and 6.iso / tex / mf / inputs / misc / wasychr.mf < prev    next >
Text File  |  1992-09-11  |  10KB  |  226 lines

  1. %
  2. % These characters should rather be in an character font than in a
  3. % symbol font
  4. %
  5.  
  6. cmchar "Cent sign";
  7. beginchar(hex"67",9u#,asc_height#,desc_depth#);
  8. italcorr x_height#*slant-.2u#;
  9. adjust_fit(0,0);
  10. pickup fine.nib; pos2(vair',90); pos4(vair',270);
  11. x2=x4=.5(w+u); top y2r=vround(x_height+1.5oo); bot y4r=-oo;
  12. pos3(curve,180); lft x3r=hround max(.6u,1.35u-.5curve); y3=.5x_height;
  13. if serifs: pos1(hair,0); pos0(flare,0);
  14.  y1=min(bar_height+.5flare+2vair'+2,.9[bar_height,x_height]-.5flare);
  15.  rt x1r=hround(w-.7u); bulb(2,1,0);  % bulb
  16.  pos5(hair,0); rt x5r=hround(w-.5u);
  17.  y5=max(good.y(.5bar_height-.9),y4l+vair');
  18.  (x,y4l)=whatever[z4r,z5l]; x4l:=min(x,x4l+.5u);
  19.  filldraw stroke pulled_super_arc.e(2,3)(.7superpull)
  20.   & pulled_super_arc.e(3,4)(.5superpull)
  21.   ..tension .9 and 1..{x5-x4,5(y5-y4)}z5e;  % arc and lower terminal
  22. else: pos1(4/7[vair',flare],80);
  23.  rt x1r=hround(w-.6u); top y1r=vround .82[bar_height,top y2r];
  24.  filldraw stroke term.e(2,1,right,.8,4);  % upper terminal
  25.  pos5(.6[vair',flare],275); rt x5r=hround(w-.5u);
  26.  y5r=good.y(y5r+1/3bar_height-y5); y5l:=good.y y5l; x5l:=good.x x5l;
  27.  forsuffixes e=l,r: path p.e; p.e=z4e{right}..tension .9 and 1..z5e;
  28.   if angle direction 1 of p.e>75:
  29.    p.e:=z4e{right}..tension atleast.9 and 1..{dir 75}z5e; fi endfor
  30.  filldraw stroke pulled_super_arc.e(2,3)(.7superpull)
  31.   & pulled_super_arc.e(3,4)(.5superpull) & p.e; fi  % arc and lower terminal
  32. pickup crisp.nib; 
  33. x6=x7=x8=x9=x2; y7=y2; y8=y4; bot y9=-d; y6-y7 = y8-y9;
  34. pos6(bar,0); pos7(bar,0);
  35. pos8(bar,0); pos9(bar,0);
  36. filldraw stroke z6e--z7e; % upper bar
  37. filldraw stroke z8e--z9e; % lower bar
  38. penlabels(0,1,2,3,4,5,6,7,8,9); endchar;
  39.  
  40. cmchar "Upside down e";
  41. beginchar(hex"55",7.25u#+max(.75u#,.5curve#),x_height#,0);
  42. italcorr .5[bar_height#,x_height#]*slant+.5min(curve#-1.5u#,0);
  43. adjust_fit(if monospace: .25u#,.5u# else: 0,0 fi);
  44. numeric left_curve,right_curve;
  45. left_curve=right_curve+6stem_corr=curve if not serifs: -3stem_corr fi;
  46. if right_curve<tiny.breadth: right_curve:=tiny.breadth; fi
  47. if left_curve<tiny.breadth: left_curve:=tiny.breadth; fi
  48. pickup tiny.nib; pos1(right_curve,180);
  49. pos2(vair,270); pos3(left_curve,0);
  50. y1=good.y (h-bar_height); bot y2r=vround (-1.5oo); y0l=top y1;
  51. lft x1r=hround max(.5u,u-.5right_curve);
  52. rt x3r=hround min(w-.5u,w-(1.25u-.5left_curve)); x2=.5w-.25u;
  53. {{interim superness:=more_super;
  54.  filldraw stroke super_arc.e(2,1)}};  % left bowl
  55. y3=.5[y2,y4]; top y4r=h+oo; x4=x2-.25u;
  56. if serifs: pos4(vair',90); pos5(hair,180);
  57.  y5=min(good.y(h-(.5bar_height-.9)),y4l-vair); x5r=x1r;
  58.  (x,y4l)=whatever[z4r,z5]; x4l:=max(x,x4l-.5u);
  59.  filldraw stroke pulled_arc.e(2,3) & pulled_arc.e(3,4)
  60.   ...{x5-x4,5(y5-y4)}z5e; % right bowl, arc, and terminal
  61. else: pos4(vair,90);
  62.  filldraw stroke super_arc.e(2,3) & super_arc.e(3,4);  % right bowl and arc
  63.  pickup fine.nib; pos4'(vair,90); z4=z4';
  64.  pos5(.5[vair,flare],95); lft x5r=hround(.6u);
  65.  y5r=good.y(y5r-1/3bar_height-y5); y5l:=good.y y5l; x5l:=good.x x5l;
  66.  filldraw stroke term.e(4',5,left,1,4); fi  % terminal
  67. path testpath; testpath=super_arc.l(2,3) & super_arc.l(3,4);
  68. y1'r=y0r=y0l-.6[thin_join,vair]; y1'l=y0l; x1'l=x1'r=x1;
  69. forsuffixes $=l,r:
  70.  x0$=xpart(((h,y0$)--(x1,y0$)) intersectionpoint testpath); endfor
  71. fill stroke z0e--z1'e;  % crossbar
  72. penlabels(0,1,2,3,4,5); endchar;
  73.  
  74. cmchar "Phonetic open o";
  75. beginchar(hex"6C",8.5u#,x_height#,0);
  76. italcorr x_height#*slant-.2u#;
  77. adjust_fit(if monospace: .5u#,.5u# else: 0,0 fi);
  78. pickup fine.nib; pos2(vair',270); pos4(vair',90);
  79. x2=x4=.5w; top y4r=vround(h+oo); bot y2r=-1.5oo;
  80. pos3(curve,0); rt x3l=hround (w-max(.6u,1.35u-.5curve)); y3=.5h;
  81. if serifs: pos1(hair,180); pos0(flare,180);
  82.  y1=h-.70[bar_height,h]+.5flare;
  83.  lft x1r=hround(1.0u); bulb(2,1,0);  % bulb
  84.  pos5(hair,180); lft x5r=hround(1.2u);
  85.  y5=min(good.y(h+oo-.45bar_height+.9),y4l-vair');
  86.  (x,y4l)=whatever[z4l,z5r]; x4l:=max(x,x4l-.5u);
  87.  filldraw stroke pulled_super_arc.e(2,3)(.7superpull)
  88.   & pulled_super_arc.e(3,4)(.5superpull)
  89.   ..tension .9 and 1..{x5-x4,5(y5-y4)}z5e;  % arc and upper terminal
  90. else: pos1(4/7[vair',flare],260);
  91.  lft x1r=hround(.6u); bot y1r=vround (.82[h-bar_height,bot y2r]);
  92.  filldraw stroke term.e(2,1,left,.8,4);  % lower terminal
  93.  pos5(.6[vair',flare],95); lft x5r=hround(1.5u);
  94.  y5r=good.y(y5l+h-1/3bar_height-y5); y5l:=good.y y5l; x5l:=good.x x5l;
  95.  forsuffixes e=l,r: path p.e; p.e=z4e{left}..tension .9 and 1..z5e;
  96.   if angle direction 1 of p.e<255:
  97.    p.e:=z4e{left}..tension atleast.9 and 1..{dir 255}z5e; fi endfor
  98.  filldraw stroke pulled_super_arc.e(2,3)(.7superpull)
  99.   & pulled_super_arc.e(3,4)(.5superpull) & p.e; fi  % arc and upper terminal
  100. penlabels(0,1,2,3,4,5); endchar;
  101.  
  102. cmchar "The small islandic thorn";
  103. beginchar(hex"69",10u#+serif_fit#,asc_height#,desc_depth#);
  104. italcorr .5x_height#*slant+min(.5curve#-.85u#,-.1u#);
  105. adjust_fit(serif_fit#,0);
  106. pickup tiny.nib; pos1(stem',0); pos2(stem,0);
  107. pos0'(stem',0); pos0(stem,0); z0l=z0'l; x0'=x1; x0=x2;
  108. lft x1l=hround(2.5u-.5stem'); top y1=h if serifs: +min(oo,serif_drop) fi;
  109. numeric edge; edge=rt x2r;
  110. pickup fine.nib; pos3(if hefty:thin_join else: hair fi,180);
  111. pos4(vair',90); pos5(curve,0); pos6(vair,-90); penpos7(x3l-x3r,-180);
  112. rt x3l=max(rt x3l-(lft x3r-tiny.lft x2l), 1/3[rt x2,edge]);
  113. y3=1/8[bar_height,x_height];
  114. x4l=w-.5(w-serif_fit)+.5u; top y4r=x_height+oo;
  115. rt x5r=hround min(w-1.35u+.5curve,w-.6u); y5=.5x_height;
  116. x6l=x4l-.2u; bot y6r=-oo;
  117. x7=x3; y7=min(y3,y6+y4-y3+.6vair);
  118. (x,y4r)=whatever[z3l,z4l]; x4r:=min(x,.5[x5r,x4]);
  119. (x',y6r)=whatever[z7l,z6l]; x6r:=min(x',.5[x5r,x6]);
  120. filldraw stroke z3e{up}...{right}z4e&super_arc.e(4,5)
  121.  &super_arc.e(5,6)&z6e{left}...{up}z7e;  % bowl
  122. y0=ypart(((edge,x_height)--(edge,0)) intersectionpoint
  123.  (z3l{up}...{right}z4l));
  124. pickup tiny.nib; bot y2=-d;
  125. filldraw stroke z1e--z0'e--z0e--z2e;  % stem
  126. pickup crisp.nib; pos8(hair,0); pos7'(stem,0);
  127. z7'=z2; x8l=x7'l; bot y8=0;
  128. filldraw stroke z7'e--z8e;  % point
  129. if serifs: sloped_serif.l(1,0',a,1/3,jut,serif_drop);  % upper serif
  130.  dish_serif(2,0,b,1/3,jut,c,1/3,jut); fi  % lower serif
  131. penlabels(0,1,2,3,4,5,6,7,8); endchar;
  132.  
  133. cmchar "Uppercase Thorn";
  134. beginchar(hex"6A",12u#,cap_height#,0);
  135. italcorr .5cap_height#*slant-.5u#;
  136. adjust_fit(cap_serif_fit#,0);
  137. pickup tiny.nib; penpos1(cap_stem'-tiny,0); penpos2(cap_stem-tiny,0);
  138. pos0(cap_stem',0); pos0'(cap_stem,0);
  139. lft x1l=hround max(2u,3u-.5cap_stem'); top y1=h; bot y2=0;
  140. x1l=x2l=x0l=x0'l; y0=y0'=y7;
  141. penpos3(cap_band,90); penpos4(cap_band,90);
  142. penpos5(cap_curve if hefty:-3stem_corr fi,0);
  143. penpos6(.5[vair,cap_band],-90); penpos7(.5[vair,cap_band],-90);
  144. y4=y3; y5=.5[y4l,y6l]; y6=y7;
  145. x3=x7=x2; x4=x6=.5w+.75u; x5r=hround(w-u);
  146. y3r=vround(.80h);
  147. y7r=vround(.20h);
  148. x4l:=x6l:=x4-.25cap_curve;
  149. filldraw stroke z1e--z0e--z0'e--z2e; % stem
  150. fill stroke z3e..pulled_arc.e(4,5) & pulled_arc.e(5,6)..z7e;  % lobe
  151. if serifs: dish_serif(1,0,a,1/3,cap_jut,b,1/3,cap_jut);  % upper serif
  152.  dish_serif(2,0',c,1/3,cap_jut,d,1/3,cap_jut); fi  % lower serif
  153. math_fit(0,ic#-2.5u#); penlabels(0,1,2,3,4,5,6,7); endchar;
  154.  
  155. cmchar "Islandic edh";
  156. beginchar(hex"6B",9u#,asc_height#,0);
  157. italcorr .8x_height#*slant;
  158. adjust_fit(0,0);
  159. penpos1(vair,90); penpos3(vair',-90);
  160. penpos1'(hair,0);
  161. penpos2(curve,180); penpos4(curve,0); penpos4'(curve,0);                                  
  162. penpos5(curve,0); penpos6(curve,0);
  163. x2r=hround max(.5u,1.25u-.5curve);
  164. x4r=w-x2r; x1=x3=.5w; y1r=x_height; y3r=-oo;
  165. y2=y4=.5(x_height-oo)-vair_corr; y2l:=y4l:=.5x_height;
  166. y4'=y4+1.5u; x4'=x4;
  167. top y6 = h; 
  168. x6= if monospace: 2/3 else: 1/3 fi [x2,x5]; 
  169. y5=0.66[y4',y6];
  170. x5=0.60[x4',x6];
  171. z1' = z4';
  172. penstroke pulled_arc.e(1',1)
  173.  & pulled_arc.e(1,2) & pulled_arc.e(2,3)
  174.  & pulled_arc.e(3,4)..z4'e..z5e---z6e; % bowl and stem
  175. numeric newstem; newstem = .5[hair,.7stem];
  176. penpos7(newstem,-45); penpos8(newstem,-45);
  177. top y8l = h;
  178. bot y7r = .12[top y1r,h];
  179. (x8-x7)/(y6-y5) = (y8-y7)/(x5-x6);
  180. z=.5[z7,z8]; % make bar symmetric
  181. (y6-y)/(y6-y5) = (x6-x)/(x6-x5);
  182. penstroke z7e--z8e; % bar
  183. penlabels(1,2,3,4,5,6,7,8); endchar;
  184.  
  185. cmchar "Permille sign";
  186. cmchar "Per mille sign";
  187. beginchar(hex"68",9u#+max(9u#,3fudge*(hair#+stem#)),
  188.   body_height#,body_height#-asc_height#);
  189. italcorr if hefty: .4asc_height#*slant-.5u# else: h#*slant-u# fi;
  190. adjust_fit(0,0); pickup fine.nib;
  191. numeric left_curve,right_curve;
  192. left_curve=hround 5/6[fudged.hair,fudged.stem];
  193. right_curve=max(fine.breadth,hround(fudged.hair if hefty:-2stem_corr fi));
  194. pos1(vair,90); pos2(left_curve,180); pos3(vair,270); pos4(right_curve,360);
  195. top y1r=h; lft x2r=hround u; rt x4r=hround(.35w-u);
  196. bot y3r=floor(if monospace: .7 else: .5 fi\\ asc_height);
  197. x1=x3=.5[x2,x4]; y2=y4=.5[y1,y3];
  198. filldraw stroke pulled_super_arc.e(1,2)(superpull)
  199.  & pulled_super_arc.e(2,3)(superpull);  % left half of upper bowl
  200. filldraw stroke super_arc.e(3,4) & super_arc.e(4,1); % right half of upper bowl
  201. pos5(vair,90); pos6(left_curve,180); pos7(vair,270); 
  202. pos8(right_curve,360);
  203. bot y7r=-d; rt x8r=hround(.70w-u); x6-x8 = x2-x4;
  204. top y5r=vround(if monospace: .3 else: .5 fi\\ asc_height);
  205. x5=x7=.5[x6,x8]; y6=y8=.5[y5,y7];
  206. filldraw stroke pulled_super_arc.e(5,6)(superpull)
  207.  & pulled_super_arc.e(6,7)(superpull);  % left half of lower bowl
  208. filldraw stroke super_arc.e(7,8) & super_arc.e(8,5); % right half of lower bowl
  209. pos5'(vair,90); pos6'(left_curve,180); pos7'(vair,270); 
  210. pos8'(right_curve,360);
  211. bot y7'r=-d; rt x8'r=hround(w-u); x6'-x8' = x6-x8;
  212. top y5'r=vround(if monospace: .3 else: .5 fi\\ asc_height);
  213. x5'=x7'=.5[x6',x8']; y6'=y8'=.5[y5',y7'];
  214. filldraw stroke pulled_super_arc.e(5',6')(superpull)
  215.  & pulled_super_arc.e(6',7')(superpull);  % left half of lower bowl
  216. filldraw stroke super_arc.e(7',8') & super_arc.e(8',5'); % right half of lower bowl
  217. pickup rule.nib; top y9=h; bot y10=-d;
  218. if hefty: x9=good.x(x5-eps); x10=good.x(x1+eps);
  219.  draw z9--z10;  % diagonal
  220. else: rt x9=hround(.67w-2.5u); lft x10=hround 2.5u; draw z9--z10;  % diagonal
  221.  pickup fine.nib; pos9(rule_thickness,angle(z9-z10)+90);
  222.  pos11(vair,angle(z1r-z4r)-90); pos12(vair,angle(z9-z10)+90);
  223.  path p; p=super_arc.r(1,4); z11r=point 2/3 of p; z12r=z9r;
  224.  filldraw stroke z11e{direction 2/3 of p}...{z9-z10}z12e; fi  % link
  225. penlabels(1,2,3,4,5,6,7,8,9,10,11,12); endchar;
  226.